/**
 * 字母出现的次数
 * @type {string}
 */
let arrString = 'abcdaabc';
arrString.split('').reduce((res, cur) => {
  console.log(res,cur);
  res[cur] ? res[cur]++ : res[cur] = 1;
  return res;
}, {});
//{a: 3, b: 2, c: 2, d: 1}

let str = 'abc345efgabcab2f';

/**
 * 字符串var str = 'abc345efgabcab2f' 去掉字符串中的字母字符
 */
const letterReg = /[a-z]/;
let result0 = str.split('').filter((c) => !letterReg.test(c)).join('');

/**
 * 字符串var str = 'abc345efgabcab2f' 去掉字符串中的a、b、c字符
 */
let result1 = str.split('').filter((c) => c !== 'a' && c !== 'b' && c !== 'c').join('');


/**
 * 将字符串中的数字用中括号扩起来，结果是'abc[345]efgabcab[2]f''
 */
const numReg = /[0-9]/;
for (let i = 0; i < str.length; i++) {
  let c = str.charAt(i);
  if(numReg.test(c)){
    if(!numReg.test(str.charAt(i-1))){
      str=str.substring(0,i)+'['+str.substring(i);
      i++;
    }
    if(!numReg.test(str.charAt(i+1))){
      str=str.substring(0,i+1)+']'+str.substring(i+1);
      i++;
    }
  }
}

/**
 * 将字符串中的每个数字分别乘以2，得到'abc6810efgabcab4f'
 */
let result2 = str.split('').map(c=>/[0-9]/.test(c)?c*2:c).join('');

/**
 * 请以优雅的方式将[1,2,[3,[4,[5]],6],7,8]转换为[1,2,3,4,5,6,7,8]
 */
let arr = [1,2,[3,[4,[5]],6,7],8];
function convert(arr) {
  return arr.map(s=>Array.isArray(s)?convert(s):s);
}
let result3 = convert(arr);//直男写法
let result4 = (arr+'').split(',');

/**
 * 计算1-10000中出现的0 的次数
 */
let s = new Array(1000).fill('')
  .map((_,i)=>i+1)
  .filter(item=>/0/.test(item))
  .reduce((sum,item)=>{
    return sum+String(item).match(/0/g).length
  },0);

/**
 * 最大公约数
 */
function gcd( x ,  y){
  var max,min,temp;
  max = x > y ? x : y ;
  min = x < y ? x : y ;
  while( max % min ){
    temp = max % min;
    max = min;
    min = temp;
  }
  return min;
}
//通过递归实现
function digui(m , n){
  return m%n==0?n:(digui(n,m%n));
}

/**
 * 编写一个函数，得到字符串中不重复的最大长度；
 例如："ababcdcd" 最大不重复字符串为："abcd",长度为4
 "qwwekw" 最大不重复字符串为： "wek",长度为3
 时间复杂度为O(0)
 */


var newStr = "";
function f1 (str,indexs = 0){
  var tempStr = "";
  for(let i=indexs;i<str.length;i++){
    if(tempStr.indexOf(str[i]) == -1){
      tempStr += str[i];
    }else {
      if(tempStr.length > newStr.length){
        newStr = tempStr;
      }

      tempStr = '';
      f1(str,i);
    }
  }
}

f1('qwwekw');
console.log('newStr:',newStr.length);


